package com.jinmdz.fmis.api.api.model.settlement;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.jinmdz.fmis.api.api.model.funeral.agreement.ServiceAgreementChargeItem;
import com.jinmdz.fmis.core.annotation.AnDict;
import com.jinmdz.fmis.core.base.BaseBean;
import com.jinmdz.fmis.core.constant.EDictCode;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;

/**
 * 加载打印结算明细加载数据
 *
 * @author ZhangLiRui
 * @date 2020/4/16 16:36
 */
@ApiModel(value = "加载打印结算明细加载数据", description = "加载打印结算明细加载数据")
public class ChargeSettleDetailsItem extends BaseBean {

    /**
     * 业务编码
     */
    @ApiModelProperty(value = "业务编码", name = "businessCode", position = 1)
    private String businessCode;

    /**
     * 逝者姓名
     */
    @ApiModelProperty(value = "逝者姓名", name = "deadName", position = 2)
    private String deadName;

    /**
     * 付款方式
     */
    @ApiModelProperty(value = "付款方式", name = "payType", position = 3)
    private String payType;

    /**
     * 收费日期
     */
    @ApiModelProperty(value = "收费日期", name = "chargeDate", position = 4)
    @JsonFormat(pattern = yyyy_MM_dd)
    private Date chargeDate;

    /**
     * 生前住址
     */
    @ApiModelProperty(value = "生前住址", name = "beforeDeathAddress", position = 5)
    private String beforeDeathAddress;

    /**
     * 减免类型编码
     */
    @ApiModelProperty(value = "减免类型编码", name = "exemptionTypeCode", position = 6)
    @JsonIgnore
    private Integer exemptionTypeCode;

    /**
     * 减免类型
     */
    @ApiModelProperty(value = "减免类型", name = "exemptionType", position = 7)
    @AnDict(dict = EDictCode.EXEMPTION_TYPE, ref = "exemptionTypeCode")
    private String exemptionType;

    /**
     * 服务项目费用清单
     */
    @ApiModelProperty(value = "服务项目费用清单", name = "chargeItems", position = 8)
    private ArrayList<ServiceAgreementChargeItem> chargeItems;

    /**
     * 费用总金额
     */
    @ApiModelProperty(value = "费用总金额", name = "itemTotalCharge", position = 9)
    @JsonFormat(shape = JsonFormat.Shape.STRING)
    private BigDecimal itemTotalCharge;

    /**
     * 优惠总金额
     */
    @ApiModelProperty(value = "优惠总金额", name = "discountTotalCharge", position = 10)
    @JsonFormat(shape = JsonFormat.Shape.STRING)
    private BigDecimal discountTotalCharge;

    /**
     * 惠民总金额
     */
    @ApiModelProperty(value = "惠民总金额", name = "benefitTotalCharge", position = 11)
    @JsonFormat(shape = JsonFormat.Shape.STRING)
    private BigDecimal benefitTotalCharge;

    /**
     * 实际收费总金额
     */
    @ApiModelProperty(value = "实际收费总金额", name = "realityTotalCharge", position = 12)
    @JsonFormat(shape = JsonFormat.Shape.STRING)
    private BigDecimal realityTotalCharge;

    /**
     * 实际收费总金额汉字大写
     */
    @ApiModelProperty(value = "实际收费总金额汉字大写", name = "realityTotalChargeText", position = 13)
    private String realityTotalChargeText;

    /**
     * 优惠服务项目费用清单
     */
    @ApiModelProperty(value = "优惠服务项目费用清单", name = "discountChargeItems", position = 14)
    private ArrayList<ServiceAgreementChargeItem> discountChargeItems;

    /**
     * 惠民服务项目费用清单
     */
    @ApiModelProperty(value = "惠民服务项目费用清单", name = "benefitChargeItems", position = 15)
    private ArrayList<ServiceAgreementChargeItem> benefitChargeItems;

    /**
     * 制单日期，即打印日期
     */
    @ApiModelProperty(value = "制单日期，即打印日期", name = "printDate", position = 16)
    @JsonFormat(pattern = yyyy_MM_dd)
    private Date printDate;

    /**
     * 制单人，即经办人
     */
    @ApiModelProperty(value = "制单人，即经办人", name = "userFullName", position = 17)
    private String userFullName;

    public String getBusinessCode() {
        return businessCode;
    }

    public ChargeSettleDetailsItem setBusinessCode(String businessCode) {
        this.businessCode = businessCode;
        return this;
    }

    public String getDeadName() {
        return deadName;
    }

    public ChargeSettleDetailsItem setDeadName(String deadName) {
        this.deadName = deadName;
        return this;
    }

    public String getPayType() {
        return payType;
    }

    public ChargeSettleDetailsItem setPayType(String payType) {
        this.payType = payType;
        return this;
    }

    public Date getChargeDate() {
        return chargeDate;
    }

    public ChargeSettleDetailsItem setChargeDate(Date chargeDate) {
        this.chargeDate = chargeDate;
        return this;
    }

    public String getBeforeDeathAddress() {
        return beforeDeathAddress;
    }

    public ChargeSettleDetailsItem setBeforeDeathAddress(String beforeDeathAddress) {
        this.beforeDeathAddress = beforeDeathAddress;
        return this;
    }

    public Integer getExemptionTypeCode() {
        return exemptionTypeCode;
    }

    public ChargeSettleDetailsItem setExemptionTypeCode(Integer exemptionTypeCode) {
        this.exemptionTypeCode = exemptionTypeCode;
        return this;
    }

    public String getExemptionType() {
        return exemptionType;
    }

    public ChargeSettleDetailsItem setExemptionType(String exemptionType) {
        this.exemptionType = exemptionType;
        return this;
    }

    public ArrayList<ServiceAgreementChargeItem> getChargeItems() {
        return chargeItems;
    }

    public ChargeSettleDetailsItem setChargeItems(ArrayList<ServiceAgreementChargeItem> chargeItems) {
        this.chargeItems = chargeItems;
        return this;
    }

    public BigDecimal getItemTotalCharge() {
        return itemTotalCharge;
    }

    public ChargeSettleDetailsItem setItemTotalCharge(BigDecimal itemTotalCharge) {
        this.itemTotalCharge = itemTotalCharge;
        return this;
    }

    public BigDecimal getDiscountTotalCharge() {
        return discountTotalCharge;
    }

    public ChargeSettleDetailsItem setDiscountTotalCharge(BigDecimal discountTotalCharge) {
        this.discountTotalCharge = discountTotalCharge;
        return this;
    }

    public BigDecimal getBenefitTotalCharge() {
        return benefitTotalCharge;
    }

    public ChargeSettleDetailsItem setBenefitTotalCharge(BigDecimal benefitTotalCharge) {
        this.benefitTotalCharge = benefitTotalCharge;
        return this;
    }

    public BigDecimal getRealityTotalCharge() {
        return realityTotalCharge;
    }

    public ChargeSettleDetailsItem setRealityTotalCharge(BigDecimal realityTotalCharge) {
        this.realityTotalCharge = realityTotalCharge;
        return this;
    }

    public String getRealityTotalChargeText() {
        return realityTotalChargeText;
    }

    public ChargeSettleDetailsItem setRealityTotalChargeText(String realityTotalChargeText) {
        this.realityTotalChargeText = realityTotalChargeText;
        return this;
    }

    public ArrayList<ServiceAgreementChargeItem> getDiscountChargeItems() {
        return discountChargeItems;
    }

    public ChargeSettleDetailsItem setDiscountChargeItems(ArrayList<ServiceAgreementChargeItem> discountChargeItems) {
        this.discountChargeItems = discountChargeItems;
        return this;
    }

    public ArrayList<ServiceAgreementChargeItem> getBenefitChargeItems() {
        return benefitChargeItems;
    }

    public ChargeSettleDetailsItem setBenefitChargeItems(ArrayList<ServiceAgreementChargeItem> benefitChargeItems) {
        this.benefitChargeItems = benefitChargeItems;
        return this;
    }

    public Date getPrintDate() {
        return printDate;
    }

    public ChargeSettleDetailsItem setPrintDate(Date printDate) {
        this.printDate = printDate;
        return this;
    }

    public String getUserFullName() {
        return userFullName;
    }

    public ChargeSettleDetailsItem setUserFullName(String userFullName) {
        this.userFullName = userFullName;
        return this;
    }
}
